package com.zhangtai.modules.dto;

import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class PromotionDto {
    private static final long serialVersionUID = 1L;

    /**
     * 晋升Id
     */
    @TableId
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long promotionId;
    /**
     * 员工id
     */
    @ApiModelProperty(value="员工id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;
    /**
     * 工号
     */
    @ApiModelProperty(value="工号",required = false)
    private String code;
    /**
     * 部门
     */
    @ApiModelProperty(value="部门",required = false)
    private String beforeUnitName;
    /**
     * 部门id
     */
    @ApiModelProperty(value="部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeUnitId;
    /**
     * 公司
     */
    @ApiModelProperty(value="公司",required = false)
    private String beforeOrgname;
    /**
     * 公司id
     */
    @ApiModelProperty(value="公司id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeOrgId;
    /**
     * 职位
     */
    @ApiModelProperty(value="职位",required = false)
    private String beforeJobName;
    /**
     * 职位id
     */
    @ApiModelProperty(value="职位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobId;
    /**
     * 晋升日期
     */
    @ApiModelProperty(value="晋升日期",required = false)
    private Date promotionDate;
    /**
     * 晋升类型，1：专业职级晋升，2：管理职级晋升
     */
    @ApiModelProperty(value="晋升类型，1：专业职级晋升，2：管理职级晋升",required = false)
    private Integer promotionType;
    /**
     * 晋级后部门
     */
    @ApiModelProperty(value="晋级后部门",required = false)
    private String afterUnitName;
    /**
     * 晋级后部门id
     */
    @ApiModelProperty(value="晋级后部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterUnitId;
    /**
     * 晋级后公司
     */
    @ApiModelProperty(value="晋级后公司",required = false)
    private String afterOrgname;
    /**
     * 晋级后公司ID
     */
    @ApiModelProperty(value="晋级后公司ID",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterOrgId;
    /**
     * 晋级后岗位
     */
    @ApiModelProperty(value="晋级后岗位",required = false)
    private String afterJobName;
    /**
     * 晋级后岗位id
     */
    @ApiModelProperty(value="晋级后岗位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobId;
    /**
     *
     */

    private Integer isDelete;
    /**
     *
     */
    private Date createTime;
    /**
     * 姓名
     */
    @ApiModelProperty(value="姓名",required = false)
    private String name;
    /**
     * 考察开始日期
     */
    @ApiModelProperty(value="考察开始日期",required = false)
    private Date beginExpeditionDate;
    /**
     * 考察结束日期
     */
    @ApiModelProperty(value="考察开始日期",required = false)
    private Date endExpeditionDate;
    /**
     * 考察期天数
     */
    @ApiModelProperty(value="考察期天数",required = false)
    private Integer expeditionDays;
    /**
     * 考察状态
     */
    @ApiModelProperty(value="考察状态",required = false)
    private Integer expeditionStatus;
    /**
     * 晋升前职级
     */
    @ApiModelProperty(value="晋升前职级",required = false)
    private String beforeJobLevel;
    /**
     * 晋升前职级Id
     */
    @ApiModelProperty(value="晋升前职级Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobLevelId;
    /**
     * 晋升后职级
     */
    @ApiModelProperty(value="晋升后职级",required = false)
    private String afterJobLevel;
    /**
     * 晋升后职级Id
     */
    @ApiModelProperty(value="晋升后职级Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobLevelId;
    /**
     * 薪资组
     */
    @ApiModelProperty(value="薪资组",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long salaryGroupId;
    /**
     * 固定月薪
     */
    @ApiModelProperty(value="固定月薪",required = false)
    private BigDecimal monthlySalary;
    /**
     * 绩效模块
     */
    @ApiModelProperty(value="绩效模块",required = false)
    private BigDecimal performance;
    /**
     * 晋升原因
     */
    @ApiModelProperty(value="晋升原因",required = false)
    private String reason;
    /**
     * 文件Id
     */
    @ApiModelProperty(value="文件Id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long fileId;


    /**
     * 申请人code
     */
    @ApiModelProperty(value="申请人code",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long applierCode;


    /**
     * 审批状态 0审批中 1审批通过 2审批拒绝
     */
    @ApiModelProperty(value="审批状态 0审批中 1审批通过 2审批拒绝",required = false)
    private Integer status;


    /**
     * 申请人岗位
     */
    @ApiModelProperty(value="申请人岗位",required = false)
    private String applierJob;

    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long orgId;

    private Integer promotionKind;

    @ApiModelProperty(value="bmp审核链接")
    private String checkUrl;

    private String afterJobType;
    @ApiModelProperty(value="申请人姓名",required = false)
    private String applierName;

    @ApiModelProperty(value="申请人部门",required = false)
    private String applierUnit;
    @ApiModelProperty(value="申请人公司",required = false)
    private String applierOrg;
    @ApiModelProperty(value="申请人职级",required = false)
    private String applierJobLevel;
}
